import store from '@/store'
import router from '../router'
/**
 * receiveMessage
 */
export default {
  install() {
    // 监听iframe消息 收到403的时候退出登录
    const receiveMessage = (event) => {
      console.log('应用集成监听消息,这里要判断是大屏发来的，还是里面的iframe发来的', event)
      // 这里要判断是大屏发来的，还是里面的iframe发来的
      //大屏发来的要传给iframe里面
      if (event.origin == 'http://192.168.16.128:10010') {
      } else {
        const data = event.data || {}
        if (event.source.location.href === location.href) return
        if (typeof data === 'object') {
          const { type, code, url, menuTopId, appType, param, action } = data
          // 如果带了参数 则处理
          let passParam = ''
          if (param && JSON.stringify(param) !== '{}') {
            Object.keys(param).forEach((p) => {
              passParam += `&${p}=${param[p]}`
            })
          }
          if (type === 'routerTo' && (code || url)) {
            const routerQuery = router.history.current.query
            console.log('routerQuery区域内页面跳转', routerQuery, code, encodeURIComponent(url))
            router.push({
              query: {
                ...routerQuery,
                menuCode: code,
                menuUrl: encodeURIComponent(url),
                menuTopId: menuTopId || routerQuery.menuTopId,
                appType: appType || routerQuery.appType,
                passParam: encodeURIComponent(passParam)
              }
            })
          }
          if (code == 403) {
            console.log('收到403的时候退出登录', code)
            store.dispatch('loginExpirationHint')
          }
          if (data.code === 'back') {
            router.go(-1)
          }
          //里面的iframe发来的,里面发来的，什么情况下要传给大屏
          if (type === 'screenTo') {
            let opener = window.opener
            // '应用集成的页面发送给大屏的信息'
            opener.postMessage(event.data, '*')
          }
        } else {
          if (String(data) === '403') {
            console.log('收到403的时候退出登录', event)
            store.dispatch('loginExpirationHint')
          } else if (data === 'back') {
            router.go(-1)
          }
        }
      }
    }
    window.addEventListener('message', receiveMessage, false)
  }
}
/**
 * @param {String || Number} msg value: 403
 * window.location.origin 通知地址的origin
 */
export function SendMessageToParent(data) {
  console.log('应用集成向外传递', data)
  if (!data) return
  window.top.postMessage(data, '*')
}
